package leetcode.year2021.month11;

// 461. 汉明距离
public class _12_4HammingDistance461 {
  // 先用异或求取结果，然后求取1的数量
  public int hammingDistance(int x, int y) {
    int i = x ^ y;
    int ans = 0;
    while (i != 0){
      if (i % 2 == 1){
        ans++;
      }
      i = i/2;
    }
    return ans;
  }

//  // 使用包装类
//  public int hammingDistance(int x, int y) {
//    return Integer.bitCount(x^y);
//  }

  /**
   * 461. 汉明距离
   * 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
   *
   * 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
   *
   *
   *
   * 示例 1：
   *
   * 输入：x = 1, y = 4
   * 输出：2
   * 解释：
   * 1   (0 0 0 1)
   * 4   (0 1 0 0)
   *        ↑   ↑
   * 上面的箭头指出了对应二进制位不同的位置。
   * 示例 2：
   *
   * 输入：x = 3, y = 1
   * 输出：1
   *
   *
   * 提示：
   *
   * 0 <= x, y <= 231 - 1
   * 通过次数174,593提交次数214,831
   */
}
